Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
NodeMCU
Open source IoT platform using Lua scripting language.

NodeMCU is a low-cost open source IoT platform. It initially included firmware which runs on the ESP8266 Wi-Fi SoC from Espressif Systems, and hardware which was based on the ESP-12 module. Later, support for the ESP32 32-bit MCU was added.

Related Image Collections Add Image
We don't have any YouTube videos related to NodeMCU yet.
We don't have any PDF documents related to NodeMCU yet.
We don't have any Books related to NodeMCU yet.
We don't have any archived web articles related to NodeMCU yet.

Overview

NodeMCU is an open source firmware for which open source prototyping board designs are available. The name "NodeMCU" combines "node" and "MCU" (micro-controller unit).5 Strictly speaking, the term "NodeMCU" refers to the firmware rather than the associated development kits.

Both the firmware and prototyping board designs are open source.6

The firmware uses the Lua scripting language. The firmware is based on the eLua project, and built on the Espressif Non-OS SDK for ESP8266. It uses many open source projects, such as lua-cjson7 and SPIFFS, a flash file system for embedded controllers.8 Due to resource constraints, users need to select the modules relevant for their project and build a firmware tailored to their needs. Support for the 32-bit ESP32 has also been implemented.

The prototyping hardware typically used is a circuit board functioning as a dual in-line package (DIP) which integrates a USB controller with a smaller surface-mounted board containing the MCU and antenna. The choice of the DIP format allows for easy prototyping on breadboards. The design was initially based on the ESP-12 module of the ESP8266, which is a Wi-Fi SoC integrated with a Tensilica Xtensa LX106 core, widely used in IoT applications (see related projects).

Types

There are two available versions of NodeMCU as version 0.9 & 1.0 where the version 0.9 contains ESP-12 and version 1.0 contains ESP-12E where E stands for "Enhanced".9

History

NodeMCU was created shortly after the ESP8266 came out. On December 30, 2013, Espressif Systems10 began production of the ESP8266.11 NodeMCU started on 13 Oct 2014, when Hong committed the first file of nodemcu-firmware to GitHub.12 Two months later, the project expanded to include an open-hardware platform when developer Huang R committed the gerber file of an ESP8266 board, named devkit v0.9.13 Later that month, Tuan PM ported MQTT client library from Contiki to the ESP8266 SoC platform,14 and committed to NodeMCU project, then NodeMCU was able to support the MQTT IoT protocol, using Lua to access the MQTT broker. Another important update was made on 30 Jan 2015, when Devsaurus ported the u8glib15 to the NodeMCU project,16 enabling NodeMCU to easily drive LCD, Screen, OLED, even VGA displays.

In the summer of 2015 the original creators abandoned the firmware project and a group of independent contributors took over. By the summer of 2016 the NodeMCU included more than 40 different modules.

ESP8266 Arduino Core

As Arduino.cc began developing new MCU boards based on non-AVR processors like the ARM/SAM MCU used in the Arduino Due, they needed to modify the Arduino IDE so it would be relatively easy to change the IDE to support alternate toolchains to allow Arduino C/C++ to be compiled for these new processors. They did this with the introduction of the Board Manager and the SAM Core. A "core" is the collection of software components required by the Board Manager and the Arduino IDE to compile an Arduino C/C++ source file for the target MCU's machine language. Some ESP8266 enthusiasts developed an Arduino core for the ESP8266 WiFi SoC, popularly called the "ESP8266 Core for the Arduino IDE".17 This has become a leading software development platform for the various ESP8266-based modules and development boards, including NodeMCUs.

Pins

NodeMCU provides access to the GPIO (General Purpose Input/Output) and a pin mapping table is part of the API documentation.18

I/O indexESP8266 pin
0 [*]GPIO16
1GPIO5
2GPIO4
3GPIO0
4GPIO2
5GPIO14
6GPIO12
7GPIO13
8GPIO15
9GPIO3
10GPIO1
11GPIO9
12GPIO10

[*] D0 (GPIO16) can only be used for GPIO read/write. It does not support open-drain/interrupt/PWM/I²C or 1-Wire.

See also

Wikimedia Commons has media related to NodeMCU.

References

  1. Zeroday. "A lua based firmware for wifi-soc esp8266". Github. Retrieved 2 April 2015. https://github.com/nodemcu/nodemcu-firmware

  2. Hari Wiguna. "NodeMCU LUA Firmware". Hackaday. Retrieved 2 April 2015. https://hackaday.io/project/3465-playing-with-esp8266/log/11449-nodemcu-lua-firmware

  3. Systems, Espressif. "Espressif Systems". Espressif-WikiDevi. Archived from the original on 1 December 2017. Retrieved 3 June 2017. https://web.archive.org/web/20171201034024/https://wikidevi.com/wiki/Espressif

  4. Brian Benchoff (2 January 2015). "A DEV BOARD FOR THE ESP LUA INTERPRETER". Hackaday. Retrieved 2 April 2015. http://hackaday.com/2015/01/01/a-dev-board-for-the-esp-lua-interpreter/

  5. "IBM Developer". https://developer.ibm.com/tutorials/iot-nodemcu-open-why-use/

  6. "IBM Developer". https://developer.ibm.com/tutorials/iot-nodemcu-open-why-use/

  7. Mpx. "Lua CJSON is a fast JSON encoding/parsing module for Lua". Github. Retrieved 2 April 2015. https://github.com/mpx/lua-cjson/

  8. Pellepl. "Wear-leveled SPI flash file system for embedded devices". GitHub. Retrieved 2 April 2015. https://github.com/pellepl/spiffs

  9. "NodeMCU - A Perfect Board for IoT". circuito.io blog. 2018-11-21. Retrieved 2021-05-27. https://www.circuito.io/blog/nodemcu-esp8266/

  10. Systems, Espressif. "Espressif Systems". Espressif-WikiDevi. Archived from the original on 1 December 2017. Retrieved 3 June 2017. https://web.archive.org/web/20171201034024/https://wikidevi.com/wiki/Espressif

  11. Espressif system (December 30, 2013). "IoT Wi-Fi 802.11b/g/n integrated SoC implementation of volume production". 中国上海讯. Archived from the original on 2 April 2015. Retrieved 2 April 2015. https://web.archive.org/web/20150402133249/http://article.liepin.com/20140701/365564.shtml

  12. Hong. "First commit of NodeMCU Firmware". Github. Retrieved 2 April 2015. https://github.com/nodemcu/nodemcu-firmware/commit/9c98808289d0863a41c695e03d4067424fc1cdec

  13. Huang R. "Initial design of NodeMCU devkit". Github. Retrieved 2 April 2015. https://github.com/nodemcu/nodemcu-devkit/commit/3c155e5a9f24aa8463aef8c7b011c69e94fcd9c7

  14. Tuan PM. "MQTT client library for ESP8266". Github. Retrieved 2 April 2015. https://github.com/tuanpmt/esp_mqtt

  15. Olikraus; Daniel Sittig. "Universal Graphics Library for 8 Bit Embedded Systems". Google code. Retrieved 2 April 2015. https://code.google.com/p/u8glib/

  16. Devsaurus. "U8glib for esp8266". Github. Retrieved 2 April 2015. https://github.com/devsaurus/nodemcu-firmware/commit/33601462efdcea189f1f20f2cece66581ee57951

  17. "ESP8266 core for Arduino". GitHub. Retrieved 10 January 2019. https://github.com/esp8266/Arduino

  18. "gpio - NodeMCU Documentation". nodemcu.readthedocs.io. Retrieved 2018-11-11. https://nodemcu.readthedocs.io/en/latest/en/modules/gpio/